package com.wms.service;

import com.wms.bean.PageBean;
import com.wms.dto.OutZhiJieDTO;
import com.wms.entity.BStockOutDirect;
import com.wms.entity.BStockOutTaskDetail;
import com.wms.entity.DStockOutTask;
import com.wms.entity.OutStorePurchase;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface OutService {

    //退货出库单  分页+条件查询
    PageBean<List<Map<String, Object>>> chaTuiHuo(Integer id,Integer status,
                                                  String startTime, String endTime,
                                                  Integer pageNum, Integer pageSize);




    //产品、商品、直接 出库共用接口
//    PageBean ChanShangZhi(String startTime, String endTime,int type,
//                          Integer id,Integer status,Integer chukuType,
//                          Integer category,String warmarea,
//                          String tiem,String reason,
//                          Integer page, Integer pageSize);
    PageBean ChanShangZhi(OutZhiJieDTO outZhiJieDTO);


    /**
     * 单接口封装完整出库流程：创建任务 + 直接出库记录 + 批量明细
     * 事务保证：三个操作要么同时成功，要么同时失败
     * @param task 出库任务
     * @param direct 直接出库记录
     * @param details 出库明细列表
     * @return 出库任务ID（自增主键）
     */
    Integer createStockOut(DStockOutTask task, BStockOutDirect direct, List<BStockOutTaskDetail> details);


//    查询所有出库明细
    PageBean Allmingxi(int page,int pageSize);

    void save(OutStorePurchase outStorePurchase);


    //增加退货任务










    //增加出库任务 选货品
    PageBean outMaterial(int page,int pageSize);

    PageBean outZJdeatil(String id,int page,int pageSize);

    //出库记录
    List<Map> outjilu(Integer id);
}
